﻿// ***********************************************************************
// Assembly         : YERIL_PI_INT
// Author           : Diego Bonilla
// Created          : 03-02-2014
//
// Last Modified By : Diego Bonilla
// Last Modified On : 03-02-2014
// ***********************************************************************
// <copyright file="OrdenTrabajo.aspx.cs" company="Development Solutions CR">
//     Copyright (c) Development Solutions CR. All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

/// <summary>
/// The Login namespace.
/// </summary>
namespace YERIL_PI_INT.PaginasWebs.Modulos.Login
{
    /// <summary>
    /// Class OrdenTrabajo.
    /// </summary>
    public partial class OrdenTrabajo : System.Web.UI.Page
    {
        /// <summary>
        /// The mensaje error
        /// </summary>
        public string MensajeError = "";
        /// <summary>
        /// The seleccion
        /// </summary>
        public string seleccion = "";
        /// <summary>
        /// The codigo_proyecto
        /// </summary>
        public static int codigo_proyecto = 0;
        /// <summary>
        /// The codigo_usuario
        /// </summary>
        public static int codigo_usuario = 0;
        /// <summary>
        /// The codigo_orden
        /// </summary>
        static int codigo_orden = 0;
        /// <summary>
        /// The codigo_detalle
        /// </summary>
        static int codigo_detalle = 0;
        /// <summary>
        /// The form accion
        /// </summary>
        static string FormAccion = "";
        /// <summary>
        /// Handles the Load event of the Page control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void Page_Load(object sender, EventArgs e)
        {
           try
           {
               codigo_orden = 0;  
                if (Session["FormAccion"] != null)
            {
                FormAccion = Session["FormAccion"].ToString();

            }

                if (FormAccion == "Editar")
                {
                    if (Session["Codigo_Orden"] != null)
                    {
                        codigo_orden = Convert.ToInt32(Session["Codigo_Orden"]);

                    }
                }
           

           
          
            if (!IsPostBack)
            {
                txtCodProyecto.Visible = false;
                txtCodUsuario.Visible = false;
                txtCodOrden.Enabled = false;
                txtFechaCreacion.Enabled = false;
                txtProyecto.ReadOnly = true;
                txtUsuario.ReadOnly = true;
                dlCliente.Enabled = false;
                btnAgregarEstructural.Enabled = false;
                btnEliminarEstructural.Enabled = false;
                btnAgregarNoEstructural.Enabled = false;
                btnEliminarNoEstructural.Enabled = false;

                txtTotalEstructural.Text = "0.00";
                txtTotalNoEstructural.Text = "0.00";
                txtIVI.Text = "0.00";
                txtGranTotal.Text = "0.00";

                Cargar_Combos();
               
             
                if (FormAccion == "Editar")
                {
                    
                    //codigo_orden = Convert.ToInt32(Request.QueryString["codigo_orden"]);
                    btnAgregarEstructural.Enabled = true;
                    btnEliminarEstructural.Enabled = true;
                    btnAgregarNoEstructural.Enabled = true;
                    btnEliminarNoEstructural.Enabled = true;

                    btnGuardarOrden.Enabled = false;
                    CargarGrid();
                    CargarEditar();
                    if (codigo_orden != 0)
                    {
                        Calculos();
                    }
                    btnAgregarEstructural.Enabled = true;
                    btnEliminarEstructural.Enabled = true;
                    btnAgregarNoEstructural.Enabled = true;
                    btnEliminarNoEstructural.Enabled = true;

                    btnGuardarOrden.Enabled = false;
                }
                else
                {
                   
                  codigo_proyecto = Convert.ToInt32(Request.QueryString["codigo_proyecto"]);
                  codigo_usuario = Convert.ToInt32(Request.QueryString["codigo_usuario"]);
                  if (codigo_orden != 0)
                  {
                      CargarGrid();
                      CargarEditar();
                      Calculos();
                  }
                CargarOrden();
             
                }
                
            }
		
	        }
	       catch (Exception exc)
            {

                MensajeError = exc.ToString();
            }
        }

        /// <summary>
        /// Calculoses this instance.
        /// </summary>
        private void Calculos()
        {
            try
            {
                WSGestion.WSGestion wsgest = new WSGestion.WSGestion();
                wsgest.Url = ConfigurationManager.AppSettings.Get("dirWs");

                decimal total_est = 0;
                int cant_detest = wsgest.SEL_Cant_DetEst(codigo_orden);
                if (cant_detest > 0)
                {
                    total_est = wsgest.SEL_Total_Estructural(codigo_orden);

                }
                
                decimal total_noest = 0;
                int cant_detnoest = wsgest.SEL_Cant_DetNoEst(codigo_orden);
                if ( cant_detnoest> 0)
                { 
                   total_noest = wsgest.SEL_Total_No_Estructural(codigo_orden);
                }
                

              
                decimal sub_total = 0;
                decimal ivi = 0;
                double por_ivi = 0.13;
                decimal gran_total = 0;


                sub_total = total_est + total_noest;
                ivi = sub_total * Convert.ToDecimal(por_ivi);
                gran_total = sub_total + ivi;

                WSGestion.MOD_Orden objOrden = new WSGestion.MOD_Orden();
                objOrden.ORD_codorden = codigo_orden;
                objOrden.ORD_grantotal = gran_total;
                objOrden.ORD_impventas = ivi;
                objOrden.ORD_totalordest = total_est;
                objOrden.ORD_totalordnoest = total_noest;
                wsgest.UPD_Total_Orden(objOrden);

                txtTotalEstructural.Text = total_est.ToString();
                txtTotalNoEstructural.Text = total_noest.ToString();
                txtIVI.Text = ivi.ToString();
                txtGranTotal.Text = gran_total.ToString();
               



            }
            catch (Exception exc)
            {

                MensajeError = exc.ToString();
            }
           


        }

        /// <summary>
        /// Cargars the editar.
        /// </summary>
        private void CargarEditar()
        {
            WSGestion.WSGestion wsgest = new WSGestion.WSGestion();
            wsgest.Url = ConfigurationManager.AppSettings.Get("dirWs");
            WSGestion.MOD_Orden objOrden = new WSGestion.MOD_Orden();
            objOrden = wsgest.SEL_OrdenByID(codigo_orden);
            txtCodOrden.Text = codigo_orden.ToString();
            txtDescripcion.Text = objOrden.ORD_descripcion;
            txtUsuario.Text = objOrden.ORD_nombreusuario;
            txtTotalEstructural.Text = objOrden.ORD_totalordest.ToString();
            txtTotalNoEstructural.Text = objOrden.ORD_totalordnoest.ToString();
            txtIVI.Text = objOrden.ORD_grantotal.ToString();

            WSGestion.MOD_Proyecto objProyecto = new WSGestion.MOD_Proyecto();
            objProyecto = wsgest.SEL_ProyectoByID(objOrden.ORD_codproyecto);
            txtProyecto.Text = objProyecto.Proy_nombre;
            dlCliente.SelectedValue = objProyecto.Proy_codcliente.ToString();
            txtFechaCreacion.Text = DateTime.Today.Date.ToShortDateString();


        
        }

        /// <summary>
        /// Cargars the grid.
        /// </summary>
        public void CargarGrid()
        {

            DataTable dt = new DataTable();
            dt.Columns.Add("Código Linea", Type.GetType("System.String"));
            dt.Columns.Add("Estructura", Type.GetType("System.String"));
            dt.Columns.Add("SubEstructura", Type.GetType("System.String"));
            dt.Columns.Add("SubTipo Estructura", Type.GetType("System.String"));
            dt.Columns.Add("Material", Type.GetType("System.String"));
            dt.Columns.Add("Cantidad", Type.GetType("System.String"));
            dt.Columns.Add("Total Colones", Type.GetType("System.String"));

            int cont = dt.Columns.Count;
            for (int i = 0; i < listaDetalleEstructural().Count; i++)
            {
                dt.Rows.Add();
                dt.Rows[dt.Rows.Count - 1]["Código Linea"] = listaDetalleEstructural()[i].DETORDEST_codlinea;
                dt.Rows[dt.Rows.Count - 1]["Estructura"] = listaDetalleEstructural()[i].DETORDEST_estructura;
                dt.Rows[dt.Rows.Count - 1]["SubEstructura"] = listaDetalleEstructural()[i].DETORDEST_clabsubest;
                dt.Rows[dt.Rows.Count - 1]["SubTipo Estructura"] = listaDetalleEstructural()[i].DETORDEST_subtipoest;
                dt.Rows[dt.Rows.Count - 1]["Material"] = listaDetalleEstructural()[i].DETORDEST_material;
                dt.Rows[dt.Rows.Count - 1]["Cantidad"] = listaDetalleEstructural()[i].DETORDEST_cantidadmat;
                dt.Rows[dt.Rows.Count - 1]["Total Colones"] = listaDetalleEstructural()[i].DETORDEST_totallineamat;

            }


            gvDetalleEstructural.DataSource = dt;
            gvDetalleEstructural.DataBind();

            DataTable dt2 = new DataTable();
            dt2.Columns.Add("Código Linea", Type.GetType("System.String"));

            dt2.Columns.Add("Material", Type.GetType("System.String"));
            dt2.Columns.Add("Descripción", Type.GetType("System.String"));

            dt2.Columns.Add("Cantidad", Type.GetType("System.String"));
            dt2.Columns.Add("Precio Total", Type.GetType("System.String"));

           
            for (int i = 0; i < listaDetalleNoEstructural().Count; i++)
            {
                dt2.Rows.Add();
                dt2.Rows[dt2.Rows.Count - 1]["Código Linea"] = listaDetalleNoEstructural()[i].DETORDNOEST_codlinea;
                dt2.Rows[dt2.Rows.Count - 1]["Material"] = listaDetalleNoEstructural()[i].DETORDNOEST_material;
                dt2.Rows[dt2.Rows.Count - 1]["Descripción"] = listaDetalleNoEstructural()[i].DETORDNOEST_descripcion;
                dt2.Rows[dt2.Rows.Count - 1]["Cantidad"] = listaDetalleNoEstructural()[i].DETORDNOEST_cantmaterial;
                dt2.Rows[dt2.Rows.Count - 1]["Precio Total"] = listaDetalleNoEstructural()[i].DETORDNOEST_totallineanoest;

            }

            gvDetalleNoEstructural.DataSource = dt2;
            gvDetalleNoEstructural.DataBind();


        }
        /// <summary>
        /// Listas the detalle no estructural.
        /// </summary>
        /// <returns>List{WSGestion.MOD_Detalle_No_Estructural}.</returns>
        private List<WSGestion.MOD_Detalle_No_Estructural> listaDetalleNoEstructural()
        {

            WSGestion.WSGestion wsgest = new WSGestion.WSGestion();
            wsgest.Url = ConfigurationManager.AppSettings.Get("dirWs");
            List<WSGestion.MOD_Detalle_No_Estructural> listaDetalleNoEstructural = wsgest.SEL_Grid_Detalle_No_Estructural(codigo_orden).ToList();
            return listaDetalleNoEstructural;

        }
        /// <summary>
        /// Listas the detalle estructural.
        /// </summary>
        /// <returns>List{WSGestion.MOD_DetalleEstructural}.</returns>
        private List<WSGestion.MOD_DetalleEstructural> listaDetalleEstructural()
        {

            WSGestion.WSGestion wsgest = new WSGestion.WSGestion();
            wsgest.Url = ConfigurationManager.AppSettings.Get("dirWs");
            List<WSGestion.MOD_DetalleEstructural> listaDetalleEstructural = wsgest.SEL_Grid_Detalle_Estructural(codigo_orden).ToList();
            return listaDetalleEstructural;

        }

        /// <summary>
        /// Cargars the orden.
        /// </summary>
        private void CargarOrden()
        {
            WSGestion.WSGestion wsgest = new WSGestion.WSGestion();
            wsgest.Url = ConfigurationManager.AppSettings.Get("dirWs");
            WSGestion.MOD_Proyecto objProyecto = new WSGestion.MOD_Proyecto();
            objProyecto = wsgest.SEL_ProyectoByID(codigo_proyecto);
            txtProyecto.Text = objProyecto.Proy_nombre;
            dlCliente.SelectedValue = objProyecto.Proy_codcliente.ToString();
            txtFechaCreacion.Text = DateTime.Today.Date.ToShortDateString();
            txtUsuario.Text  = wsgest.SEL_UsuarioByID(codigo_usuario).USU_nombrecompleto;
        


        }

        /// <summary>
        /// Cargar_s the combos.
        /// </summary>
        private void Cargar_Combos()
        {
            try
            {
                WSGestion.WSGestion wsgest = new WSGestion.WSGestion();
                wsgest.Url = ConfigurationManager.AppSettings.Get("dirWs");
                List<WSGestion.MOD_Clientes> ListaClientes = wsgest.SEL_GRID_CLIENTES().ToList();
                this.dlCliente.DataSource = ListaClientes;
                this.dlCliente.DataValueField = "CLI_codcliente";
                this.dlCliente.DataTextField = "CLI_nombre";
                this.dlCliente.DataBind();

                List<WSGestion.MOD_Estado_Orden> ListaEstados = wsgest.SEL_Grid_Estado_Orden().ToList();
                this.dlEstadoOrden.DataSource = ListaEstados;
                this.dlEstadoOrden.DataValueField = "ESTORD_codestado";
                this.dlEstadoOrden.DataTextField = "ESTORD_nombre";
                this.dlEstadoOrden.DataBind();

               

            }
            catch (Exception exc)
            {

                MensajeError = exc.ToString();
            }
        }

        /// <summary>
        /// Handles the Click event of the btnAgregarEstructural control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="ImageClickEventArgs"/> instance containing the event data.</param>
        protected void btnAgregarEstructural_Click(object sender, ImageClickEventArgs e)
        {
            try
            {

                Session["Codigo_Orden"] = txtCodOrden.Text;
                Session["Update"] = "Update";
                Response.Redirect("DetalleMeterialEstructural.aspx");
             

            }
            catch (Exception exc)
            {

                MensajeError = exc.ToString();
            }
            
            
        }

        /// <summary>
        /// Handles the Click event of the btnGuardarOrden control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="ImageClickEventArgs"/> instance containing the event data.</param>
        protected void btnGuardarOrden_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                btnAgregarEstructural.Enabled = true;
                btnEliminarEstructural.Enabled = true;
                btnAgregarNoEstructural.Enabled = true;
                btnEliminarNoEstructural.Enabled = true;
                btnGuardarOrden.Enabled = false;

                WSGestion.WSGestion wsgest = new WSGestion.WSGestion();
                wsgest.Url = ConfigurationManager.AppSettings.Get("dirWs");
                WSGestion.MOD_Orden objorden = new WSGestion.MOD_Orden();
                objorden.ORD_codorden = Convert.ToInt32(wsgest.SEL_ULTIMOCODORDEN().ToString());
                txtCodOrden.Text = objorden.ORD_codorden.ToString();
                objorden.ORD_codproyecto = codigo_proyecto;
                objorden.ORD_descripcion = txtDescripcion.Text;
                objorden.ORD_totalordest = Convert.ToDecimal(txtTotalEstructural.Text);
                objorden.ORD_totalordnoest = Convert.ToDecimal(txtTotalNoEstructural.Text);
                objorden.ORD_impventas = Convert.ToDecimal(txtIVI.Text);
                objorden.ORD_grantotal = Convert.ToDecimal(txtGranTotal.Text);
                objorden.ORD_codestado = Convert.ToInt32(dlEstadoOrden.SelectedValue.ToString());
                objorden.ORD_fecha = Convert.ToDateTime(txtFechaCreacion.Text);
                objorden.ORD_codusuario = codigo_usuario;

                if (wsgest.CRE_Orden(objorden))
                {
                    MensajeError = "Se ha creado la Orden Número:"+txtCodOrden.Text;
                }
                else
                {
                    MensajeError = "Procedimiento Almacenado no aceptado";
                }
            }
            catch (Exception exc)
            {

                MensajeError = exc.ToString();
            }
            
        }

        /// <summary>
        /// Handles the SelectedIndexChanged event of the gvDetalleEstructural control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void gvDetalleEstructural_SelectedIndexChanged(object sender, EventArgs e)
        {
            codigo_detalle = Convert.ToInt32(gvDetalleEstructural.SelectedRow.Cells[1].Text);
            seleccion =gvDetalleEstructural.SelectedRow.Cells[5].Text;
            MensajeError = "El material seleccionado es: " + seleccion;
            
        }

        /// <summary>
        /// Handles the Click event of the btnEliminarEstructural control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="ImageClickEventArgs"/> instance containing the event data.</param>
        protected void btnEliminarEstructural_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                if (codigo_detalle == 0)
                {
                    MensajeError = "No se ha seleccionado ninguna linea de detalle";
                }
                else
                {
                    WSGestion.WSGestion wsgest = new WSGestion.WSGestion();
                    wsgest.Url = ConfigurationManager.AppSettings.Get("dirWs");
                    wsgest.DEL_DetalleEstructural(codigo_detalle);
                    CargarGrid();
                    Calculos();
                }
            }
            catch (Exception exc)
            {

                MensajeError = exc.Message.ToString();
            }
            
        }

        /// <summary>
        /// Handles the Click event of the btnAgregarNoEstructural control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="ImageClickEventArgs"/> instance containing the event data.</param>
        protected void btnAgregarNoEstructural_Click(object sender, ImageClickEventArgs e)
        {
            try
            {

                Session["Codigo_Orden"] = txtCodOrden.Text;

                Response.Redirect("DetalleMaterialNoEstructural.aspx");


            }
            catch (Exception exc)
            {

                MensajeError = exc.ToString();
            }
        }

        protected void btnSalir_Click(object sender, ImageClickEventArgs e)
        {
            Response.Redirect("Dashboard.aspx");
        }

        
    }
}